package com.mastercard.assets.web.struts.actions;

import com.mastercard.assets.MasterCardException;
import com.mastercard.assets.jpa.TblAsset;
import com.mastercard.assets.jpa.TblCampania;
import com.mastercard.assets.jpa.TblGanador;
import com.mastercard.assets.jpa.TblPaquete;
import com.mastercard.assets.jpa.TblTarea;
import com.mastercard.assets.jpa.TblTareaPreimplementacion;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.struts.forms.GeneraGanadoresForm;
import com.mastercard.assets.web.util.to.UserLogin;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class Ganadores
         extends
		Action
{
    
    public ActionForward execute(
							ActionMapping mapping , 
							ActionForm form ,
							HttpServletRequest request , 
							HttpServletResponse response )
		throws 
			IOException , 
			ServletException
        {
            HttpSession session = request.getSession( ) ;
		
		// en caos de null
		if( session == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma el userLogin
		UserLogin user = ( UserLogin ) session.getAttribute( "UserLogin" ) ;
		
		// en caso de null
		if( user == null )
			return mapping.findForward( "noLogin" ) ;
                
                // formulario
                GeneraGanadoresForm f = ( GeneraGanadoresForm ) form ;
                
                int cveWorkPreimplementation = f.getCveWorkPreimplementation( ) ;
                
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                String fecha1 , fecha2 , fecha3 , fecha4 , fecha5 , fecha6 ;
                
                TblTareaPreimplementacion tblTareaPreimple = MasterCardDAO.findTareaPreimplementacionById( cveWorkPreimplementation ) ;
                
                TblCampania campania = tblTareaPreimple.getTblPreimplementacion( ).getTblCampania( ) ;
                
                TblTarea tarea = tblTareaPreimple.getTblTarea( ) ;
                
                TblAsset asset = tblTareaPreimple.getTblAsset( ) ;
                
                String nombre_tarea = tblTareaPreimple.getTblTarea( ).getNombre( ) ;
                
                List< TblPaquete > packDelAsset = new ArrayList< TblPaquete >( ) ;
                List< TblPaquete > packs =  campania.getTblPaquetes( ) ;
                List< TblGanador > ganadores = new ArrayList< TblGanador >( ) ;
                
                for ( TblPaquete p : packs )
                {
                    if ( p.getTblAsset( ).getCveAsset( ) == asset.getCveAsset() )
                    {
                        packDelAsset.add( p ) ;
                    
                    try {
                            List< TblGanador > win = MasterCardDAO.getWinnerWithPackage( p.getCvePaquete( ) ) ;
                            
                            if ( win != null )
                            {
                                for ( TblGanador w : win )
                                {
                                    ganadores.add( w ) ;
                                }
                                
                            }
                            
                        } catch (MasterCardException ex) {
                            MasterCardDAO.closeEntityManager( ) ;
                            Logger.getLogger(Ganadores.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                    
                    
                }
                
                if ( ganadores.size( ) > 0 )
                {
                    int i = ganadores.size( ) , x = 0 ;
                
                    // Declara los arreglos del form
                    String[] gNombre = new String[i] ; String[] gApellido = new String[i] ; String[] gFec_nac = new String[i] ;
                    String[] Email = new String[i] ; String[] Tel = new String[i] ; String[] Cel = new String[i] ;
                    String[] gPasaporte = new String[i] ; String[] gVigenciaIni = new String[i] ; String[] gVigenciaFin = new String[i] ;
                    String[] aNombre = new String[i] ; String[] aApellido = new String[i] ; String[] aFec_nac = new String[i] ;
                    String[] aPasaporte = new String[i] ; String[] aVigenciaIni = new String[i] ; String[] aVigenciaFin = new String[i] ;
                    String[] archivoBoleto = new String[i] ; String[] archivoAgenda = new String[i] ; String[] archivoCotizacion = new String[i] ; int[] cveWin = new int[i] ;
                    
                    
                    for ( TblGanador g : ganadores )
                    {
                       gNombre[x] = g.getGNombre( ) ;
                       gApellido[x] = g.getGApellido( ) ;
                       fecha1 = sdf.format( g.getGFecNacimiento( ) ) ;
                       gFec_nac[x] = fecha1 ;
                       Email[x] = g.getEmail( ) ;
                       Tel[x] = g.getTelFijo( ) ;
                       Cel[x] = g.getTelMovil( ) ;
                       gPasaporte[x] = g.getGPasaporte( ) ;
                       fecha2 = sdf.format( g.getGVigenciaInicio( ) ) ;
                       gVigenciaIni[x] = fecha2 ;
                       fecha3 = sdf.format( g.getGVigenciaFin( ) ) ;
                       gVigenciaFin[x] = fecha3 ;
                       aNombre[x] = g.getANombre( ) ;
                       aApellido[x] = g.getAApellido( ) ;
                       fecha4 = sdf.format( g.getAFecNacimiento( ) ) ;
                       aFec_nac[x] = fecha4 ;
                       aPasaporte[x] = g.getAPasaporte( ) ;
                       fecha5 = sdf.format( g.getAVigenciaInicio( ) ) ;
                       aVigenciaIni[x] = fecha5 ;
                       fecha6 = sdf.format( g.getAVigenciaFin() ) ;
                       aVigenciaFin[x] = fecha6 ;
                       
                       if ( nombre_tarea.equals( "Entrega de Boletos" ) ){
                           if ( g.getArchivoBoleto( ) == null ) {
                               archivoBoleto[x] = "0" ;
                           } else {
                               archivoBoleto[x] = g.getArchivoBoleto( ) ;
                           }
                           
                           if ( g.getArchivoAgenda( ) == null ) {
                               archivoAgenda[x] = "0" ;
                           } else {
                               archivoAgenda[x] = g.getArchivoAgenda( ) ;
                           }
                           
                           if ( g.getArchivoCotizacion( ) == null ) {
                               archivoCotizacion[x] = "0" ;
                           } else {
                               archivoCotizacion[x] = g.getArchivoCotizacion( ) ;
                           }
                                                      
                           cveWin[x] = g.getCveGanador( ) ;
                       }
                           
                       
                       x += 1 ;
                    }
                    
                    request.setAttribute( "gNombre", gNombre ) ;
                    request.setAttribute( "gApellido", gApellido ) ;
                    request.setAttribute( "gFec_nac", gFec_nac ) ;
                    request.setAttribute( "Email", Email ) ;
                    request.setAttribute( "Tel", Tel ) ;
                    request.setAttribute( "Cel", Cel ) ;
                    request.setAttribute( "gPasaporte", gPasaporte ) ;
                    request.setAttribute( "gVigenciaIni", gVigenciaIni ) ;
                    request.setAttribute( "gVigenciaFin", gVigenciaFin ) ;
                    request.setAttribute( "aNombre", aNombre ) ;
                    request.setAttribute( "aApellido", aApellido ) ;
                    request.setAttribute( "aFec_nac", aFec_nac ) ;
                    request.setAttribute( "aPasaporte", aPasaporte ) ;
                    request.setAttribute( "aVigenciaIni", aVigenciaIni ) ;
                    request.setAttribute( "aVigenciaFin", aVigenciaFin ) ;
                    
                    
                if ( nombre_tarea.equals( "Entrega de Boletos" ) )
                {
                    user.setNextWorkArea( "/WEB-INF/pages/WorkArea/GeneraBoletos.jsp" ) ;
                    request.setAttribute( "archivoBoleto", archivoBoleto ) ;
                    request.setAttribute( "archivoAgenda", archivoAgenda ) ;
                    request.setAttribute( "archivoCotizacion", archivoCotizacion ) ;
                    request.setAttribute( "cveWin", cveWin ) ;
                    request.setAttribute( "editar", 0 ) ;
                    
                }else
                {
                    user.setNextWorkArea( "/WEB-INF/pages/WorkArea/GeneraGanadores.jsp" ) ;
                    request.setAttribute( "editar", 1 ) ;
                }
                    
                                
                request.setAttribute( "paquetes", packDelAsset ) ;
                request.setAttribute( "cveTareaPre", cveWorkPreimplementation ) ;
                request.setAttribute( "tarea", tarea ) ;
                request.setAttribute( "campania", campania ) ;
                request.setAttribute( "asset", asset ) ;
                
                MasterCardDAO.closeEntityManager( ) ;
                return mapping.findForward( "success" ) ;
                }
                
                
                
                user.setNextWorkArea( "/WEB-INF/pages/WorkArea/GeneraGanadores.jsp" ) ;
                                
                request.setAttribute( "paquetes", packDelAsset ) ;
                request.setAttribute( "cveTareaPre", cveWorkPreimplementation ) ;
                request.setAttribute( "tarea", tarea ) ;
                request.setAttribute( "campania", campania ) ;
                request.setAttribute( "asset", asset ) ;
                request.setAttribute( "editar", 0 ) ;
            
            MasterCardDAO.closeEntityManager( ) ;
            return mapping.findForward( "success" ) ;
                
        }
    
}
